package com.baofu.paycore.service.facade;

import com.system.commons.result.Result;
import com.baofu.paycore.service.facade.model.CancelResDTO;
import com.baofu.paycore.service.facade.model.ReverseResDTO;
import com.baofu.paycore.service.facade.model.authconfirm.AuthConfirmDTO;
import com.baofu.paycore.service.facade.model.authconfirm.AuthConfirmResDTO;
import com.baofu.paycore.service.facade.model.authconfirm.AuthConfirmReverseDTO;
import com.baofu.paycore.service.facade.model.authconfirm.AuthConfirmCancelDTO;

/**
 * 预授权确认相关服务
 * <p/>
 * <ul>
 * <li>预授权完成接口</li>
 * <li>预授权完成撤销接口</li>
 * <li>预授权完成冲正接口</li>
 * <li>预授权完成撤销冲正接口</li>
 * </ul>
 *
 * @author LZQ
 * @version 1.0.0 createTime: 14/12/8 下午8:46
 */
public interface AuthConfirmServiceFacade {

    /**
     * 预授权完成接口
     *
     * @param authConfirmDTO            预授权完成请求参数
     * @return                          预授权完成响应
     *                                  response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<AuthConfirmResDTO> authConfirm(AuthConfirmDTO authConfirmDTO, String transLogId);

    /**
     * 预授权完成撤销接口
     *
     * @param authConfirmCancelDTO      预授权完成撤销请求参数
     * @return                          预授权完成撤销响应
     *                                   response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<CancelResDTO> authConfirmCancel(AuthConfirmCancelDTO authConfirmCancelDTO, String transLogId);

    /**
     * 预授权完成冲正接口
     *
     * @param reverseDTO                预授权完成冲正请求参数
     * @return                          预授权完成冲正响应
     *                                   response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<ReverseResDTO> authConfirmReverse(AuthConfirmReverseDTO reverseDTO, String transLogId);

    /**
     * 预授权完成撤销冲正接口
     *
     * @param authConfirmCancelDTO      预授权完成撤销冲正请求参数
     * @return                          预授权完成撤销冲正响应
     *                                   response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<CancelResDTO> cancelAuthConfirmReverse(AuthConfirmCancelDTO authConfirmCancelDTO, String transLogId);
}
